/**
 * 加密工具函数
 */
import CryptoJS from 'crypto-js'

/**
 * 基础加密方法
 * @param {string} data 需要加密的数据
 * @param {string} key 加密密钥
 * @returns {string} 加密后的字符串
 */
function encryptBase(data, key = 'checksystem-secret-key') {
  if (!data) return '';
  const dataStr = typeof data === 'object' ? JSON.stringify(data) : String(data);
  return CryptoJS.AES.encrypt(dataStr, key).toString();
}

/**
 * 基础解密方法
 * @param {string} encryptedData 已加密的数据
 * @param {string} key 解密密钥
 * @returns {string} 解密后的字符串
 */
function decryptBase(encryptedData, key = 'checksystem-secret-key') {
  if (!encryptedData) return '';
  const bytes = CryptoJS.AES.decrypt(encryptedData, key);
  return bytes.toString(CryptoJS.enc.Utf8);
}

/**
 * 密码加密
 * @param {string} password 原始密码
 * @returns {string} 加密后的密码
 */
export function encrypt(password) {
  if (!password) return '';
  // 使用固定的密钥进行AES加密
  return encryptBase(password);
}

/**
 * 密码解密
 * @param {string} encryptedPassword 加密的密码
 * @returns {string} 解密后的原始密码
 */
export function decrypt(encryptedPassword) {
  if (!encryptedPassword) return '';
  return decryptBase(encryptedPassword);
}

/**
 * 数据加密
 * @param {object|string} data 需要加密的数据
 * @returns {string} 加密后的数据
 */
export function encryptData(data) {
  return encryptBase(data);
}

/**
 * 数据解密
 * @param {string} encryptedData 加密的数据
 * @returns {string} 解密后的数据
 */
export function decryptData(encryptedData) {
  return decryptBase(encryptedData);
}

/**
 * MD5加密
 * @param {string} data 需要加密的数据
 * @returns {string} MD5加密后的字符串
 */
export function md5(data) {
  if (!data) return '';
  return CryptoJS.MD5(data).toString();
} 